package cn.flying.cloud.system.api;


import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import cn.flying.cloud.system.model.Organization;
import cn.flying.cloud.system.model.Position;
import cn.flying.cloud.system.model.Role;
import cn.flying.cloud.system.model.User;

/**
 * 系统用户信息服务接口
 *
 * @author: admin
 * @date: 2022年05月22日 17:34
 * @version: 1.0
 */
public interface UserServiceApi {


    /**
     * 根据userId称查询用户信息
     *
     * @param userId
     * @return
     */
    @GetMapping("/findUserByUserId")
    User findUserByUserId(@RequestParam("userId") String userId);

    /**
     * 根据用户名称查询用户信息
     *
     * @param username
     * @return
     */
    @GetMapping("/findUserByUsername")
    User findUserByUsername(@RequestParam("username") String username);

    /**
     * 根据岗位ID查询岗位信息
     *
     * @param postId
     * @return
     */
    @GetMapping("/findPositionByPostId")
    Position findPositionByPostId(@RequestParam("postId") String postId);

    /**
     * 根据岗位查询岗位信息
     *
     * @param postIds
     * @return
     */
    @PostMapping("/findPositionByPostIds")
    List<Position> findPositionByPostIds(@RequestBody List<String> postIds);

    /**
     * 根据角色ID查询角色信息
     *
     * @param roleId
     * @return
     */
    @GetMapping("/findRoleByRoleId")
    Role findRoleByRoleId(@RequestParam("roleId") String roleId);

    /**
     * 根据角色查询角色信息
     *
     * @param roleIds
     * @return
     */
    @PostMapping("/findRoleByRoleIds")
    List<Role> findRoleByRoleIds(@RequestBody List<String> roleIds);

    /**
     * 查询所有的组织机构
     *
     * @return
     */
    @PostMapping("/getAllOrganizationList")
    List<Organization> getAllOrganizationList();

    /**
     * 根据组织编码查询组织机构信息
     *
     * @param orgId
     * @return
     */
    @GetMapping("/getOrganizationByOrgId")
    Organization getOrganizationByOrgId(@RequestParam("orgId") String orgId);
}
